def primes(N):                           # N: [int]
    if N <= 3:                           # []
        return range(2,N)                # [list(int)]
    #testa apenas os numeros impares
    primos = [2] +  range(3,N,2)         # [list(int)]
    index = 1                            # [int]
    #convertendo em inteiro
    #para acelerar comparacao abaixo
    top = int(N ** 0.5)                  # [int]
    while 1:                             # [int]
        i = primos[index]                # [int]
        if i>top:                        # []
            break
        index += 1                       # [int]
        primos = [x for x in primos if (x % i) or (x == i)] # [list(int)]
    return primos                        # [list(int)]
primes(100000                            # [list(int)]
